With the advent of the World-Wide Web (WWW) and the Internet, client-server architecture has become commonplace. That is, individual client devices connect to backend web sites or portals to acquire and/or update information. This is particularly true in enterprise environments but is also prevalent with consumers that access enterprise resources, where those resources are controlled by back-end systems.
Typically, in a client server environment having back-end database services (one type of backend resource managed via a server), such as Structured Query Language (SQL), SAP, Lightweight Directory Access Protocol (LDAP), etc. users via client devices (clients) access data and perform a variety of operations on the back-end data such as additions, deletions, and/or modifications. For performance reasons, the data that the user views and manipulates are often confined to a local cache of the client. So, volatile operations such as updates (commits) to the back-end systems are often delayed or batched at different times during the day or perhaps less frequently, such as just once a day.
One problem with local client caching in a distributed environment is that users may be viewing and manipulating data that is stale or that has pending changed states from what is actually present in a user's cache; so, different users within the distributed environment are often unaware of the pending changes on the data that are changed in a local cache of another user but that are uncommitted to the backend server. Therefore, data synchronization can become an issue. Techniques to force locking to avoid synchronization issues result in performance bottlenecks if locks and commits are performed more regularly to avoid the inherent synchronization issues.
Additionally, when changes are made, cached results that a user is manipulating can require re-pagination within the cache, such that items that appeared on one page may actually need updated to appear on different pages within the user cache.
Thus, it can be seen that improved techniques for distributed cache management are needed.